package com.szrt.java.day20170109.demo02;


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.junit.Test;

/**
 * 
 * 正常使用List的缺点
 * 
 * 1 有编译警告(不是错误。也就说不做任何处理可以得到正确的结果) 对于强迫症患者来说就是一个噩梦。 解决
 * 2 正常情况下 我们加的元素一般来说都是同类型的。但是List默认什么都可以加。  解决
 * 3 拿出来的东西 默认是Object  解决   你放入的是什么。那么拿出来的就是什么
 * 
 * 如何解决?  
 * 答：使用泛型
 * 
 * 泛型：指定具体的一个范围。指定一个具体的类型(不符合条件的不要)。 找女朋友。温柔的，可爱的，小鸟依人 
 * 
 * 语法： <具体的类型> 类型：类 接口
 * @author zsrt
 *
 */
public class ArrayListTest {

	
	@Test
	public void findAll() throws Exception {
		
		//1: 创建这个类ArrayList的对象? 调用构造方法  ArrayList 泛型
		List<String> list = new ArrayList<String>();
		
		//增加
		list.add("咖啡猫A");  //咖啡猫AA
		list.add("咖啡猫B");
		list.add("哮天犬");
		
		System.out.println("第1种方式去遍历 ==========================================");
		for(int index=0;index<list.size();index++){
			String pet = list.get(index);
			System.out.println(pet);
		}
		
		System.out.println("第2种方式去遍历 ==========================================");
		for(String pet : list){
			System.out.println(pet);
		}
		
		System.out.println("第3种方式去遍历 ==========================================");
		
		// Iterator<String> 表示迭代器中放的元素都是 String类型
		Iterator<String> it = list.iterator();
		while(it.hasNext()){
			String pet  = it.next();
			System.out.println(pet);
		}
		
	}
	
	
	@Test
	public void add() throws Exception {
		
		//1: 创建这个类ArrayList的对象? 调用构造方法  ArrayList 泛型
		List<String> list = new ArrayList<String>();
		
		//增加
		list.add("咖啡猫A");  //咖啡猫AA
		list.add("咖啡猫B");
		list.add("哮天犬");
		
		//list.add(110);
		
		String b =  list.get(1);
		System.out.println(b);
		
		
		
	}
}
